home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / corals / code.lua next >
Text File  |  2005-07-16  |  9KB  |  254 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky14.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         room.zvednout = 0
  16.         room.uvod = random(42) + 14
  17.         room.ahojkrabe = 0
  18.         room.pobliz = 0
  19.         room.nesahat = 0
  20.         room.bud = 0
  21.         room.rozhovor = 0
  22.         room.veselit = 0
  23.  
  24.         return function()
  25.             if no_dialog() and isReady(small) and isReady(big) then
  26.                 if room.zvednout == 0 and dist(big, valec) <= 1 and big.dir == dir_no and random(6) == 1 and valec.Y > 14 then
  27.                     room.zvednout = 1
  28.                     addv(4, "re-v-ocel")
  29.                 elseif room.uvod <= 0 then
  30.                     local bit_spi = {}
  31.                     if krab.spi == 0 then
  32.                         switch(random(10)){
  33.                             [1] = function()
  34.                                 bit_spi[0] = true
  35.                                 bit_spi[2] = true
  36.                             end,
  37.                             [2] = function()
  38.                                 bit_spi[0] = true
  39.                                 bit_spi[2] = true
  40.                             end,
  41.                             [3] = function()
  42.                                 bit_spi[1] = true
  43.                                 bit_spi[3] = true
  44.                             end,
  45.                             [4] = function()
  46.                                 bit_spi[1] = true
  47.                                 bit_spi[3] = true
  48.                             end,
  49.                             [5] = function()
  50.                                 bit_spi[4] = true
  51.                                 bit_spi[5] = true
  52.                             end,
  53.                             [6] = function()
  54.                                 bit_spi[0] = true
  55.                                 bit_spi[2] = true
  56.                             end,
  57.                             [7] = function()
  58.                                 bit_spi[1] = true
  59.                                 bit_spi[3] = true
  60.                             end,
  61.                             [8] = function()
  62.                                 bit_spi[0] = true
  63.                                 bit_spi[4] = true
  64.                             end,
  65.                             [9] = function()
  66.                                 bit_spi[1] = true
  67.                                 bit_spi[2] = true
  68.                             end,
  69.                             [0] = function()
  70.                                 bit_spi[4] = true
  71.                             end,
  72.                         }
  73.                     end
  74.                     if bit_spi[0] then
  75.                         addv(3 + random(9), "re-v-koraly0")
  76.                     end
  77.                     if bit_spi[1] then
  78.                         addv(3 + random(9), "re-v-koraly1")
  79.                     end
  80.                     if bit_spi[2] then
  81.                         addm(3 + random(9), "re-m-libi0")
  82.                     end
  83.                     if bit_spi[3] then
  84.                         addm(3 + random(9), "re-m-libi1")
  85.                     end
  86.                     if bit_spi[4] then
  87.                         addm(3 + random(9), "re-m-libi2")
  88.                     end
  89.                     if bit_spi[5] then
  90.                         addv(3 + random(9), "re-v-pokoj")
  91.                     end
  92.                     room.uvod = 800 + random(300) + random(400)
  93.                 elseif room.ahojkrabe == 0 and dist(small, krab) <= 1 and random(20) == 1 then
  94.                     room.ahojkrabe = 1
  95.                     addm(1, "re-m-ahoj")
  96.                 elseif krab.spi == 0 and room.pobliz > 20 then
  97.                     krab.spi = 1
  98.                 elseif room.bud == 0 and room.pobliz > random(800) then
  99.                     room.bud = 1
  100.                     krab:planDialog(2, "re-k-budi")
  101.                     if room.ahojkrabe == 0 and random(2) == 1 then
  102.                         room.ahojkrabe = 1
  103.                         addm(5, "re-m-ahoj")
  104.                     end
  105.                 elseif krab.dopad >= 1 and krab.dopad <= 10 then
  106.                     krab.dopad = 1000
  107.                     krab:planDialog(0, "re-k-au")
  108.                 elseif room.nesahat == 0 and (krab.dir == dir_left or krab.dir == dir_right) then
  109.                     room.nesahat = 1
  110.                     if odd(game_getCycles()) then
  111.                         room.bud = 1
  112.                     end
  113.                     krab:planDialog(0, "re-k-nesahej")
  114.                 elseif room.pobliz == random(500) + 30 then
  115.                     if odd(room.pobliz) then
  116.                         krab:planDialog(5, "re-k-spim")
  117.                     else
  118.                         krab:planDialog(5, "re-k-otravujete")
  119.                     end
  120.                 elseif room.rozhovor == 0 and room.pobliz > 1 and random(333) == 1 then
  121.                     room.rozhovor = 1
  122.                     addm(7, "re-m-uzitecny"..random(2))
  123.                     if odd(game_getCycles()) then
  124.                         addv(7, "re-v-obejit")
  125.                     else
  126.                         addv(6, "re-v-nech")
  127.                         addv(3, "re-v-nervozni")
  128.                     end
  129.                 elseif room.veselit == 0 and krab.spi > 0 and random(2000 + 100 * pokus) <= room.bud * 2 + room.nesahat * 2 + room.ahojkrabe + room.rozhovor then
  130.                     room.veselit = 1
  131.                     addm(10, "re-m-rozveselit")
  132.                     addv(7, "re-v-nevsimej")
  133.                 end
  134.             end
  135.             room.uvod = room.uvod - 1
  136.             if dist(big, krab) <= 1 or dist(small, krab) <= 1 then
  137.                 room.pobliz = room.pobliz + 1
  138.             else
  139.                 room.pobliz = 0
  140.             end
  141.             if math.mod(game_getCycles(), 3000) == 0 then
  142.                 room.rozhovor = 0
  143.             end
  144.         end
  145.     end
  146.  
  147.     -- -------------------------------------------------------------
  148.     local function prog_init_valec()
  149.         return function()
  150.             if valec.dir == dir_up then
  151.                 room.zvednout = 1
  152.             end
  153.         end
  154.     end
  155.  
  156.     -- -------------------------------------------------------------
  157.     local function prog_init_krab()
  158.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  159.  
  160.         krab.spi = 0
  161.         krab.dopad = 10000
  162.  
  163.         return function()
  164.             if krab:isTalking() then
  165.                 krab.spi = 1
  166.             end
  167.             if krab.spi == 0 then
  168.                 if krab.dir == dir_no then
  169.                     krab.afaze = 0
  170.                 else
  171.                     krab.spi = 1
  172.                 end
  173.             elseif krab:isTalking() then
  174.                 krab.afaze = math.mod(game_getCycles(), 4) + 2
  175.             elseif krab.dir == dir_down then
  176.                 krab.afaze = random(9) + 1
  177.             else
  178.                 anim_table = {
  179.                     [99] = function()
  180.                         krab.spi = 0
  181.                         room.pobliz = -14 - random(50)
  182.                         if random(2) == 1 then
  183.                             room.ahojkrabe = 0
  184.                         end
  185.                         if random(2) == 1 then
  186.                             room.nesahat = 0
  187.                         end
  188.                         if random(2) == 1 then
  189.                             room.bud = 0
  190.                         end
  191.                     end,
  192.                     [20] = function()
  193.                         krab.afaze = 0
  194.                     end,
  195.                     [26] = function()
  196.                         krab.afaze = random(4) + 2
  197.                     end,
  198.                     default = function()
  199.                         krab.afaze = 1
  200.                     end,
  201.                 }
  202.                 anim_table[21] = anim_table[20]
  203.                 anim_table[22] = anim_table[20]
  204.                 anim_table[23] = anim_table[20]
  205.                 anim_table[24] = anim_table[20]
  206.                 anim_table[25] = anim_table[20]
  207.                 anim_table[27] = anim_table[26]
  208.                 anim_table[28] = anim_table[26]
  209.  
  210.                 switch(math.mod(random(krab.spi), 100))(anim_table)
  211.             end
  212.             if krab.spi > 0 then
  213.                 krab.spi = krab.spi + 1
  214.             end
  215.             if krab.dir == dir_down then
  216.                 krab.dopad = 0
  217.             else
  218.                 krab.dopad = krab.dopad + 1
  219.             end
  220.  
  221.             krab:updateAnim()
  222.         end
  223.     end
  224.  
  225.     -- --------------------
  226.     local update_table = {}
  227.     local subinit
  228.     subinit = prog_init_room()
  229.     if subinit then
  230.         table.insert(update_table, subinit)
  231.     end
  232.     subinit = prog_init_valec()
  233.     if subinit then
  234.         table.insert(update_table, subinit)
  235.     end
  236.     subinit = prog_init_krab()
  237.     if subinit then
  238.         table.insert(update_table, subinit)
  239.     end
  240.     return update_table
  241. end
  242. local update_table = prog_init()
  243.  
  244.  
  245. -- -----------------------------------------------------------------
  246. -- Update
  247. -- -----------------------------------------------------------------
  248. function prog_update()
  249.     for key, subupdate in pairs(update_table) do
  250.         subupdate()
  251.     end
  252. end
  253.  
  254.